/* Nueva tabla de auditoria de la modificacion de informes (cubos) guarda el estado anterior 
   con el codigo incrementandolo con un entero de 3.
   
*/
ALTER TABLE cubosmod ADD COLUMN usuarioLogin VARCHAR(50);


CREATE TABLE IF NOT EXISTS cubosmod_auditoria (LIKE CUBOSMOD);


CREATE OR REPLACE FUNCTION public.tg_cubosmod_auditoria()
  RETURNS trigger AS
$BODY$
DECLARE
  vUltimo varchar;
BEGIN
  INSERT INTO CUBOSMOD_AUDITORIA SELECT OLD.*;
  vUltimo := COALESCE((SELECT MAX(COD) FROM CUBOSMOD_AUDITORIA WHERE COD ILIKE OLD.COD || '_%'),'_000');
  vUltimo := substring(vUltimo,POSITION('_' IN vUltimo) + 1, length(vUltimo));
  vUltimo := TO_CHAR(CAST(vUltimo as integer) + 1, 'FM000');
  UPDATE CUBOSMOD_AUDITORIA SET COD = SUBSTRING(COD || '_' || vUltimo,1,20),
                                fechaInsert = now(), fechaupdate = null,
                                usuarioLogin = new.usuarioLogin
  WHERE COD = NEW.COD;  
RETURN NEW;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION public.tg_cubosmod_auditoria()
  OWNER TO abacouser;

CREATE TRIGGER cubosmod_auditoria
  AFTER UPDATE
  ON public.cubosmod
  FOR EACH ROW
  EXECUTE PROCEDURE public.tg_cubosmod_auditoria();

-- ======================================
SELECT aaVersion('450.00','449.01');
-- ======================================
